from PyQt6.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QTextEdit
from PyQt6.QtCore import Qt
import random


class AIPatternGenerator(QWidget):
    """AI图案生成页面"""

    def __init__(self, parent=None):
        super().__init__(parent)
        self.init_ui()

    def init_ui(self):
        """初始化用户界面"""
        layout = QVBoxLayout(self)
        layout.setContentsMargins(20, 20, 20, 20)
        layout.setSpacing(20)

        # 标题
        title_label = QLabel("AI智能图案生成")
        title_label.setStyleSheet("font-size: 18px; font-weight: bold;")
        title_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(title_label)

        # 图案显示区域
        self.pattern_display = QLabel("图案将在这里显示")
        self.pattern_display.setStyleSheet("""
            background-color: white;
            border: 2px solid #ccc;
            border-radius: 5px;
            padding: 20px;
            min-height: 300px;
            font-size: 16px;
        """)
        self.pattern_display.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(self.pattern_display)

        # 生成新图案按钮
        self.generate_button = QPushButton("生成新图案")
        self.generate_button.clicked.connect(self.generate_pattern)
        layout.addWidget(self.generate_button)

        # 图案详情
        self.pattern_details = QTextEdit()
        self.pattern_details.setPlaceholderText("图案详情将在这里显示")
        self.pattern_details.setMaximumHeight(150)
        layout.addWidget(self.pattern_details)

    def generate_pattern(self):
        """生成新的图案"""
        patterns = [
            "方形网格布局", "圆形放射布局", "波浪形流动布局",
            "菱形交错布局", "六边形蜂窝布局", "螺旋形布局",
            "随机艺术布局", "对称几何布局", "渐变大小布局"
        ]

        techniques = [
            "从中心向四周铺设，确保对称性",
            "按照预先标记的网格线进行铺设",
            "先铺设边界，再填充内部",
            "分段施工，确保每段完成度",
            "使用专用工具保持砖块间距一致"
        ]

        selected_pattern = random.choice(patterns)
        selected_technique = random.choice(techniques)

        # 更新图案显示
        self.pattern_display.setText(f"AI推荐图案:\n{selected_pattern}")

        # 更新图案详情
        details = f"""
        图案类型: {selected_pattern}
        推荐理由: 此图案适合当前场地尺寸和砖块规格，能够最大化利用材料并减少浪费。
        施工技巧: {selected_technique}
        预计节省材料: {random.randint(5, 15)}%
        美观度评分: {random.randint(80, 95)}/100
        施工难度: {random.randint(1, 5)}/5
        """
        self.pattern_details.setText(details)

    def set_parameters(self, site_length, site_width, brick_length, brick_width, pattern_type, modes):
        """设置参数并生成图案"""
        # 生成基于参数的图案
        pattern_text = f"""
        场地尺寸: {site_length}m × {site_width}m
        砖块尺寸: {brick_length}m × {brick_width}m
        图案类型: {pattern_type}
        拼摆方式: {', '.join(modes)}

        AI生成的优化图案:
        """
        self.pattern_display.setText(pattern_text)
        self.generate_pattern()